export function isNotEmpty(s: string) {
    return !/^\s*$/.test(s);
}

export function isEmail(s: string) {
    return /^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{3,4})$/.test(s);
}

export function isCorrectOrderCode(s: string) {
    return /^[A-Z0-9]{20,36}$/i.test(s);
}

export function isChinese(s: string) {
    return /^[\u4e00-\u9fa5]+$/.test(s);
}

export function isCellPhone(s: string) {
    return /^1[0-9]{10}$/.test(s);
}

export function isCellPhone2(s: string) {
    return /^1[3456789][0-9]{9}$/.test(s);
}

export function isCorrectVerifyCode(s: string) {
    return /^[1-9]\d{5}$/.test(s);
}

// 是否含有Emoji表情包
export function hasEmoji(s: string) {
    return /[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/gi.test(
        s
    );
}

/**
 * 姓名校验参数说明：
 * @param {string} name 需要校验的姓名
 *
 * 姓名校验规则：
 * 1.姓名只能是中文或者英文（拒绝数字、表情包、特殊符号等），且不能中英文混杂
 * 2.姓名长度限制在中文2-5个字、英文3-10个字母
 * 3.英文情况允许输入点（英文名字中的那种点）允许输入空格
 */
export function validateName(name: string) {
    return /^([\u4e00-\u9fa5]{2,5}|[a-zA-Z\.\s]{3,10})$/.test(name);
}
export function isNumber(age: string) {
    let tips = '';
    if (!age) {
        tips = '年龄不能为空';
        return tips;
    }

    if (!/(^[1-9]\d*$)/.test(age)) {
        tips = '年龄只能为数字';
        return tips;
    }

    if (parseInt(age) < 0 && parseInt(age) > 130) {
        tips = '年龄只能在0和130岁之间';
        return tips;
    }
    return tips;
}
/**
 * 姓名校验参数说明：
 * @param {string} name 需要校验的姓名
 * @param {number} maxNameLegth 姓名最大长度
 *
 * 姓名校验规则：
 * 1.姓名只能是中文或者英文（拒绝数字、表情包、特殊符号等），且不能中英文混杂
 * 2.姓名长度限制在中文2-5个字、英文3-10个字母
 * 3.英文情况允许输入点（英文名字中的那种点）允许输入空格 (但首尾不能出现空格或者点)
 */
export function commonValidateName(name: string, maxNameLegth = 5) {
    let tips = '';
    let nameLegth = maxNameLegth;
    if (!name) {
        tips = '姓名不能为空';
        return tips;
    }
    if (name) {
        // 去除空格
        name = name.trim();
        //表情包过滤
        if (hasEmoji(name)) {
            tips = '姓名不能包含表情包';
            return tips;
        }
        // 中文过滤
        if (isChinese(name)) {
            if (name.length < 2) {
                tips = '姓名最少2个字';
                return tips;
            }
            if (name.length > nameLegth) {
                tips = `姓名不超过${nameLegth}个字`;
                return tips;
            }
        }
        // 英文或者中英混合过滤
        if (/^([a-zA-Z\.\s]{1,})$/.test(name)) {
            // 英文情况
            if (/^\.|\.$/.test(name)) {
                tips = '英文名字不能以.开头结尾';
                return tips;
            }
            if (name.length < 3) {
                tips = '英文姓名最少3个字母';
                return tips;
            }
            if (name.length > 10) {
                tips = '英文姓名不超过10个字母';
                return tips;
            }
        }
        if (!/^([a-zA-Z\.\s]{1,})$/.test(name) && !isChinese(name)) {
            tips = '姓名只能是中文或者英文';
            return tips;
        }
    }
    return tips;
}
